//#pragma order

#include "user_global.h"
#include "modbus.h"

// modbus 寄存器变量定义
//==========================================================
// RO-BIT
//==========================================================

RO_BIT ro_bit =
{
    0,
};



//==========================================================
// RW-BIT
//==========================================================
RW_BIT rw_bit=
{
   0,                                            // 0000 启动左缓冲试管架队列推入. 1: 启动; 0: 停止
   0,                                            // 0001 检测到该值为1时停止trans_out，为0 时无效
   0,                                            // 0002 启动右缓冲试管架队列推入. 1: 启动; 0: 停止
   0,                                            // 0003 启动停止条码扫描. 1:启动; 0:停止
   0,                                            // 0004 BEEP. 1:启动; 0:停止
   0,                                            // 0005 检测到按键长按置1，由软件清除
   0,                                            // 0006 检测到按键长按置1，由软件清除
   0,                                            // 0007 禁止或暂停按钮触发动作
   0,                                            // 0008 禁止或暂停按钮触发动作
};

//==========================================================
// RO-WORD
//==========================================================

RO_LONG_ADD ro_long_addL[12] = {
    S1_POS_L,
    S2_POS_L,
    V1_POS_L,
    V2_POS_L,
    V3_POS_L,
    T1_POS_L,
    S1_DISTANCE_L,
    S2_DISTANCE_L,
    V1_DISTANCE_L,
    V2_DISTANCE_L,
    V3_DISTANCE_L,
    T1_DISTANCE_L,
};

RO_LONG_ADD ro_long_addH[12] = {
    S1_POS_H,
    S2_POS_H,
    V1_POS_H ,
    V2_POS_H,
    V3_POS_H,
    T1_POS_H,
    S1_DISTANCE_H,
    S2_DISTANCE_H,
    V1_DISTANCE_H ,
    V2_DISTANCE_H,
    V3_DISTANCE_H,
    T1_DISTANCE_H,
};

RO_CHAR rochar[RO_CHAR_COUNT] = {
    {0x03,0x3A},
    {0x5C,0x6F}
};

RO_WORD ro_word =
{
   0
};


//==========================================================
// RW-WORD
//==========================================================

RW_LONG_ADD rw_long_addL[6] = {

    S1_MAX_DISTANCE_L,
    S2_MAX_DISTANCE_L,
    V1_MAX_DISTANCE_L,
    V2_MAX_DISTANCE_L,
    V3_MAX_DISTANCE_L,
    T1_MAX_DISTANCE_L,
};

RW_LONG_ADD rw_long_addH[6] = {
    S1_MAX_DISTANCE_H,
    S2_MAX_DISTANCE_H,
    V1_MAX_DISTANCE_H ,
    V2_MAX_DISTANCE_H,
    V3_MAX_DISTANCE_H,
    T1_MAX_DISTANCE_H,
};


RW_WORD rw_word =
{
    0,                                   // 0000    当前执行指令
    {0},                                 // 0001/16 ACTION参数
    {0},
    {0},                                 // 0011/16  应用参数
    1500,                                // 0021     S1_MAX_SPEED               S1 最高速度 0.01 rad/sec^2
    6800,                                // 0022/2   S1_MAX_DISTANCE            S1 最大行程, 步.
    1500,                                // 0024     S2_MAX_SPEED               S2 最高速度 0.01 rad/sec^2
    6800,                                // 0025/2   S2_MAX_DISTANCE            S2 最大行程, 步.
    1000,                                // 0027     V1_MAX_SPEED               V1 最高速度 0.01 rad/sec^2
    5000,                                // 0028/2   V1_MAX_DISTANCE            V1 最大行程, 步.
    1000,                                // 002A     V2_MAX_SPEED               V2 最高速度 0.01 rad/sec^2
    5000,                                // 002B/2   V2_MAX_DISTANCE            V2 最大行程, 步.
    1000,                                // 002D     V3_MAX_SPEED               V3 最高速度 0.01 rad/sec^2
    5000,                                // 002E/2   V3_MAX_DISTANCE            V3 最大行程, 步.
    1000,                                // 0030     T1_MAX_SPEED               T1 最大速度, 0.01 rad/sec^2
    5000,                                // 0031/2   T1_MAX_DISTANCE            T1 最大行程
    4000,                                // 0033     S1_MAX_SPEED_2             S1 最高速度2 复位速度 0.01 rad/sec^2
    4000,                                // 0034     S2_MAX_SPEED_2             S2 最高速度2 复位速度，0.01 rad/sec^2
    1000,                                // 0035     T1_MAX_SPEED_2             T1 最大速度2, 第二阶段(信息获取段)速度0.01 rad/sec^2
    240,                                 // 0036     V1阀门关闭位置，步
    240,                                 // 0036     V2阀门关闭位置，步
    350,                                 // 0038     V3阀门关闭位置，步
};

//==========================================================
// DIAGNOSTIC
//==========================================================
ushort  diagnostic                      = 0;        // 诊断寄存器
ushort  bus_message_count               = 0;        // 总线上消息数量
ushort  bus_error_count                 = 0;        // 总线上通讯错误数量
ushort  bus_exception_count             = 0;        // 总线上异常应答数量
ushort  server_message_count            = 0;        // 下位机消息数量
ushort  server_no_response_count        = 0;        // 下位机未响应消息数量
ushort  server_exception_count          = 0;        // 下位机异常应答消息数量
ushort  server_busy_count               = 0;        // 下位机状态忙数量
ushort  bus_char_overrun_count          = 0;        // 总线字符过载（Overrun）数量

ushort  server_status                   = 0;        // 下位机状态

uchar  program_status            = 0;
bit ps_listen_only        = 0;    // 只听模式
bit ps_server_busy        = 0;    // 设备忙
bit ps_sensor_error_1     = 0;    //  设备传感器错误1
bit ps_sensor_error_2     = 0;    //  设备传感器错误2

uchar event_count;
uchar event_log[MAX_EVENT_COUNT];


